package proyecto.EntityBeans;

import java.io.Serializable;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

@Entity
@Table(name="actividad")
public class Actividad implements Serializable {

	private static final long serialVersionUID = 7422574264557894633L;
	
	private int idActividad;
	private int codigo;
	private String nombre;
	private String descripcion;
	private String enunciado;
	private Date fechaAlta;
	private Tema tema;
	private Set<Curso> cursos;
	
	
	public Actividad() {
		super();
		// TODO Auto-generated constructor stub
	}

	public Actividad(int idActividad, int codigo, String nombre, String descripcion, String enunciado, Date fechaAlta) {
		super();
		this.idActividad = idActividad;
		this.codigo = codigo;
		this.nombre = nombre;
		this.descripcion = descripcion;
		this.enunciado = enunciado;
		this.fechaAlta = fechaAlta;
		this.tema = null;
		this.cursos = new HashSet<Curso>();
	}

	public Actividad(String nombre, String descripcion, String enunciado, Date fechaAlta) {
		super();
		this.nombre = nombre;
		this.descripcion = descripcion;
		this.enunciado = enunciado;
		this.fechaAlta = fechaAlta;
		this.tema = null;
		this.cursos = new HashSet<Curso>();
	}
		
	public Actividad(int idActividad, int codigo, String nombre, String descripcion, String enunciado, Date fechaAlta, Tema tema) {
		super();
		this.idActividad = idActividad;
		this.codigo = codigo;
		this.nombre = nombre;
		this.descripcion = descripcion;
		this.enunciado = enunciado;
		this.fechaAlta = fechaAlta;
		this.tema = tema;
		this.cursos = new HashSet<Curso>();
	}
		
	public Actividad(String nombre, String descripcion, String enunciado, Date fechaAlta, Tema tema) {
		super();
		this.nombre = nombre;
		this.descripcion = descripcion;
		this.enunciado = enunciado;
		this.fechaAlta = fechaAlta;
		this.tema = tema;
		this.cursos = new HashSet<Curso>();
	}

	
	@Id	
	@GeneratedValue(strategy = GenerationType.AUTO)
	public int getIdActividad() {
		return idActividad;
	}

	public void setIdActividad(int idActividad) {
		this.idActividad = idActividad;
	}	
	
	@Column(name = "CODIGO")
	public int getCodigo() {
		return codigo;
	}

	public void setCodigo(int codigo) {
		this.codigo = codigo;
	}

	@Column(name = "DESCRIPCION")
	public String getDescripcion() {
		return descripcion;
	}

	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}

	@Column(name = "ENUNCIADO")
	public String getEnunciado() {
		return enunciado;
	}

	public void setEnunciado(String enunciado) {
		this.enunciado = enunciado;
	}

	@Column(name = "FECHAALTA")
	public Date getFechaAlta() {
		return fechaAlta;
	}

	public void setFechaAlta(Date fechaAlta) {
		this.fechaAlta = fechaAlta;
	}
	
	@Column(name = "NOMBRE")
	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	
	/**********************************************/
	
	@ManyToOne(fetch=FetchType.EAGER)
	@JoinColumn(name="idTema")
	public Tema getTema() {
		return tema;
	}

	public void setTema(Tema tema) {
		this.tema = tema;
	}
	
	/*******************************************************/
	
	@ManyToMany(fetch=FetchType.EAGER,mappedBy="actividades")
	public Set<Curso> getCursos() {
		return cursos;
	}

	public void setCursos(Set<Curso> cursos) {
		this.cursos = cursos;
	}

	/*******************************************************/
	

	@Override
	public String toString() {
		return "Nro. Actividad: " + this.getIdActividad() + "Codigo: " + this.getCodigo() + " Nombre " + getNombre() + " Descripcion " + getDescripcion() + " enunciado " + this.getEnunciado() + " fecha alta " + this.getFechaAlta();
	}
	
	
}
